Video compression is used in a variety of current and emerging products. Video compression is used in digital television set-top boxes, digital satellite systems, high definition television (HDTV) decoders, digital versatile disk (DVD) players, video conferencing, and other digital video applications. Video compression allows images of video content to be compressed by removing non-essential features of the video content. Compressing video content reduces the storage area needed to store the content. Compressed video content may be transmitted faster than un-compressed video content.
There are a variety of video coding methods that compress digital video content. Video coding standards have been developed to standardize the various video coding methods so that the compressed digital video content is rendered in formats that video encoders and decoders can recognize. For example, the International Telecommunication Union (ITU) in cooperation with the International Standards Organization (ISO) has developed the MPEG-4 Advanced Video Coding (AVC)/H.264 standard. There are multiple manipulations of video content when compressing the video content with the H.264 standard. For example, the H.264 standard will operate on portions of an image known as macroblocks. Each macroblock may be a 16×16 array of pixels.
Macroblocks may be comprised of smaller block types. Smaller block types allow image data to be more precisely encoded than encoding image data with only macroblock granularity. For example, blocks smaller than the macroblock may be 4×4, 4×8, 8×4, 8×8, 8×16, and 16×8 arrays of pixels. A macroblock may be comprised of two or more of the smaller block types and may include different combinations of the smaller block types. For example, a 16×16 macroblock may be comprised of one 8×8, four 4×4 and one 8×16 block.
In order to determine the block types that are best for a macroblock, several cost values need to be computed. For example, in the H.264 standard a sum of absolute difference (SAD) and a motion vector (MV) cost value are calculated for each of 41 different block types. The SAD is calculated with respect to a reference image. If there is more than one MV in a reference area, then the SAD and the MV cost value need to be computed for each MV in the reference area for each of the 41 block types. These computations are numerous. A better way to select blocks types may be desirable.